/*
 * BitHandlerOutput.h
 *
 *  Created on: 15/05/2010
 *      Author: gus
 */

#ifndef BITHANDLEROUTPUT_H_
#define BITHANDLEROUTPUT_H_

#include <iostream>
#include <fstream>
#include <bitset>

using namespace std;
// los bits le van llegando a cuentagotas a un objeto de esta clase. Este los va guardando hasta
// q logra juntar 8. En ese momento, lo convierte en un char y lo escribe en el bloque
// asumo q los bits van a llegarle en forma de bool...

class BitHandlerOutput {

private:

	ofstream archSalida;
	bitset<8*sizeof(char)> bitSet;
	int indexBitset; // posicion del proximo bit q sera seteado
	char ultimoCharEscrito;
public:

	BitHandlerOutput();
	BitHandlerOutput(const char* fileName, ios::openmode);
	void siguienteBitEsUno(bool);
	void escribirSiguienteChar();
	void rellenarConCeros();
	void seek(int pos);
	char getUltimoCharEscrito();
	virtual ~BitHandlerOutput();
	void cerrarArchivo();
};

#endif /* BITHANDLEROUTPUT_H_ */
